As is well known, multicast is the delivery of a message or information from a source to a group (one or more) of destination devices simultaneously in a single transmission from the source. Copies of the transmission are created automatically in other network elements, such as routers, according to the topology of the network.
Multicasting is of particular importance not only due to the increasing number of multicast applications, such as video conferencing, video gaming, content distribution, etc., but also because several network control mechanisms, such as those needed for timing synchronization, beaconing, etc., are multicast in nature.
To date reliable multicast has not been standardized because current reliable multicast schemes incur significant overhead in terms of acknowledgements: traditionally, every packet that is multicast has to be acknowledged (“ACK”) by each destination device that has registered for the multicast content. In a wireless network such as an 802.11 network and for a large number of destination devices this approach does not scale well and creates a large amount of traffic consisting solely of ACKs. This is commonly referred to as “ACK implosion”. When the direct and feedback channels are on the same frequency or when the bandwidth/rate of the feedback channel is very low this can significantly reduce performance, e.g., throughput, delay. Known solutions to the ACK implosion problem include the following:                1) Forward Error Correction (FEC) Based multicast: In this scheme the protocol is based on UDP and thus it does not involve transmission of ACKs. FEC gives the capability to a packet to recover from some errors, but precisely because the scheme does not involve ACKs, this approach does not provide full reliability, and therefore it is not appropriate for multicast applications where reliable transmission is a requirement (e.g., for multicasting movies to movie theaters where a high movie quality is expected). Furthermore, it introduces large overheads since extra bits of coding (FEC) need to be added in the original packets which increases the number of bits that need to be effectively communicated.        2) NACK-based reliable multicast: In this scheme, each destination signals the source in relation to packets it did not receive (NACK) and sends a single acknowledgement (ACK) at the end of the transmission to indicate that all the transmitted packets have been successfully received. This scheme is mainly suitable for situations in which a multicast packet is lost in transmission rather than at the point of receipt by a given destination device. Each destination device is configured to transmit a NACK with a random delay, such that, when the source receives the first NACK it multicasts the packet again. In theory this prevents the other destination devices to send unnecessary NACK packets, but when the channels between the source and individual destination devices are unreliable it can lead to a problem of NACK implosion.        3) Network Coding approaches: Random Linear Network Coding (RLNC) has been recently introduced as a means to provide reliability in wireless multicasting. In this approach, the source creates “generations” of K packets, where each generation is a subset of the packets in its queue. The packets within a given generation are randomly linearly combined, which is to say that at each of a series of timeslots each packet in a generation is multiplied with a random coefficient, chosen randomly and uniformly from an M-ary field, and subsequently the modulo M-sum of the latter is sent through the network to each destination device. In this way, for every generation of K packets s1, s2, . . . , sk the source sends Σi=1K αisi packets, each of which has the same size as the original packets, where the coefficients αi belong in an M-ary field and where the sum is modulo M. Each destination device needs to know these random coefficients in order decode the packets it receives from the source. The coefficients may be appended to the header of the encoded packets sent from the source to the destination devices. Alternatively the source can send the destination device a random seed so that both the sender and the destination device can create the same random coefficients. Each destination device creates a matrix of the received coefficients where each vector of coefficients used to encode the packets of a generation comprises a row of this matrix. At each timeslot in the series, and upon reception of a broadcast transmission of a coded packet from the source, each destination device sends feedback to the source as to whether it was able to decode the original K packets or whether it needs another coded packet. When a destination device is able to invert its corresponding matrix (that is, when the number of linearly independent rows of the matrix equals the generation size K), it notifies the source that it is able to decode the original K packets. Once the source receives such a feedback message from every destination, it knows that it can proceed to encode the next generation of packets. Otherwise, it transmits another sequence of coded packets before it solicits feedback again from the destination devices. This enhancement of Random Linear Network Coding provides an improvement over the ACK/NACK approaches since an acknowledgement is sent after several transmissions instead of after every transmission.        
A problem with known RLNC multicasting schemes in realistic time-varying channel conditions is that configuration and transmission of the randomly linearly combined packets does not take account of the dynamic channel conditions.
There is therefore a need to provide an improved reliable multicast scheme.